package com.cloud.commons.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 基于token的认证信息
 */
@Component
public class JwtUtils {
    private static String SECRRT;

    private static final Logger LOG = LoggerFactory.getLogger(JwtUtils.class);
    /**
     * 密匙，在有static的情况下通过注解拿不到SECRRT的数据，则只能通过set方法进行获取
     */

    @Value("${token.secret}")
    public void setSECRRT(String secrrt){
        SECRRT = secrrt;
    }


    public static String getToken() {
        //失效时间 2小时后失效
        final Long EXPIRES = System.currentTimeMillis() + 7200000;
        String token="";
        token= JWT.create()
                //自定义字段
//                .withClaim("username",user.getUsername()).withClaim("userId",user.getId()).withClaim("password",user.getPassword()).withClaim("EXPIRES",EXPIRES)
                .withExpiresAt(new Date(EXPIRES))
                .sign(Algorithm.HMAC256(SECRRT));
//        LOG.info("获取到的token值是："  + token + "过期时间是：" + EXPIRES);
        return token;
    }

    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis() + 7200);
    }
}
